<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_BUILTIN_ANNOTATION">open</symbolName> class <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName>() {
  fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">foo</symbolName>() {
      if (this is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>) {
          <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL"><symbolName descr="Implicit receiver smart cast to B" tooltip="Implicit receiver smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_RECEIVER">bar</symbolName></symbolName>()
      }
  }
}

class <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>() : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CONSTRUCTOR">A</symbolName>() {
  fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">bar</symbolName>() {}
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">f9</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName>?) {
  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><error descr="[UNRESOLVED_REFERENCE] Unresolved reference: bar" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: bar" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">bar</error>()
  if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>) {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  }
  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><error descr="[UNRESOLVED_REFERENCE] Unresolved reference: bar" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: bar" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">bar</error>()
  if (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>)) {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><error descr="[UNRESOLVED_REFERENCE] Unresolved reference: bar" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: bar" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">bar</error>()
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  }
  if (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>) || <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>() == <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_OBJECT">Unit</symbolName>) {
      <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><error descr="[UNRESOLVED_REFERENCE] Unresolved reference: bar" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: bar" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">bar</error>()
  }
  if (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>)) {
    return;
  }
  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">fAny</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>?) {
    if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>) {
        <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
        <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
    }
    if (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>)) {
        return;
    }
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">f10</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName>?) {
  if (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>)) {
    return;
  }
  if (!(<warning descr="[USELESS_IS_CHECK] Check for instance is always 'true'" tooltip="[USELESS_IS_CHECK] Check for instance is always 'true'" textAttributesKey="WARNING_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName></warning>)) {
    return;
  }
}

class <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">C</symbolName>() : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CONSTRUCTOR">A</symbolName>() {
  fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">bar</symbolName>() {

  }
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">f101</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName>?) {
    if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">C</symbolName>) {
      <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to C" tooltip="Smart cast to C" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>();
    }
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">f11</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName>?) {
  when (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>) {
    is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
    is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to A" tooltip="Smart cast to A" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
    is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to A" tooltip="Smart cast to A" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
    <warning descr="[USELESS_IS_CHECK] Check for instance is always 'true'" tooltip="[USELESS_IS_CHECK] Check for instance is always 'true'" textAttributesKey="WARNING_ATTRIBUTES">is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>?</warning> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>.<error descr="[UNRESOLVED_REFERENCE] Unresolved reference: bar" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: bar" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">bar</error>()
    else -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  }
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">f12</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName>?) {
  when (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>) {
    is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
    is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to A" tooltip="Smart cast to A" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
    is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to A" tooltip="Smart cast to A" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>();
    <warning descr="[USELESS_IS_CHECK] Check for instance is always 'true'" tooltip="[USELESS_IS_CHECK] Check for instance is always 'true'" textAttributesKey="WARNING_ATTRIBUTES">is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>?</warning> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>.<error descr="[UNRESOLVED_REFERENCE] Unresolved reference: bar" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: bar" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">bar</error>()
    is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">C</symbolName> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to C" tooltip="Smart cast to C" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
    else -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  }

  if (<warning descr="[USELESS_IS_CHECK] Check for instance is always 'true'" tooltip="[USELESS_IS_CHECK] Check for instance is always 'true'" textAttributesKey="WARNING_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>?</warning>) {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><error descr="[UNRESOLVED_REFERENCE] Unresolved reference: bar" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: bar" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">bar</error>()
  }
  if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>) {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
  }
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">f13</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName>?) {
  if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>) {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
  }
  else {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
    <error descr="[UNRESOLVED_REFERENCE] Unresolved reference: c" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: c" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">c</error>.<error descr="[DEBUG] Reference is not resolved to anything, but is not marked unresolved" tooltip="[DEBUG] Reference is not resolved to anything, but is not marked unresolved" textAttributesKey="KOTLIN_DEBUG_INFO">bar</error>()
  }

  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  if (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>)) {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  }
  else {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  }

  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName> && <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>() == <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_OBJECT">Unit</symbolName>) {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
  }
  else {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_SAFE_ACCESS">?.</symbolName><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">foo</symbolName>()
  }

  if (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>) || !(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">C</symbolName>)) {
  }
  else {
  }

  if (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>) || !(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">C</symbolName>)) {
  }

  if (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>)) return
  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">f14</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName>?) {
  while (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>)) {
  }
  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
}
fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">f15</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">A</symbolName>?) {
  do {
  } while (!(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">B</symbolName>))
  <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to B" tooltip="Smart cast to B" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">bar</symbolName>()
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">getStringLength</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">obj</symbolName> : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>) : <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Char</symbolName>? {
  if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">obj</symbolName> !is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>)
    return null
  return <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.String" tooltip="Smart cast to kotlin.String" textAttributesKey="KOTLIN_SMART_CAST_VALUE">obj</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">get</symbolName>(0) // no cast to kotlin.String is needed
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">toInt</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">i</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName>?): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName> = if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">i</symbolName> != null) <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.Int (for null call)" tooltip="Smart cast to kotlin.Int (for null call)" textAttributesKey="KOTLIN_SMART_CAST_VALUE"><symbolName descr="Smart cast to kotlin.Int (for null call)" tooltip="Smart cast to kotlin.Int (for null call)" textAttributesKey="KOTLIN_SMART_CAST_VALUE">i</symbolName></symbolName></symbolName> else 0
fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">illegalWhenBody</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName> = when(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>) {
    is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.Int (for null call)" tooltip="Smart cast to kotlin.Int (for null call)" textAttributesKey="KOTLIN_SMART_CAST_VALUE"><symbolName descr="Smart cast to kotlin.Int (for null call)" tooltip="Smart cast to kotlin.Int (for null call)" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName></symbolName>
    is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> -> <error descr="[TYPE_MISMATCH] Type mismatch: inferred type is String but Int was expected" tooltip="[TYPE_MISMATCH] Type mismatch.<table><tr><td>Required:</td><td>Int</td></tr><tr><td>Found:</td><td>String</td></tr></table>" textAttributesKey="ERRORS_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName></error>
    else -> 1
}
fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">illegalWhenBlock</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName> {
    when(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>) {
        is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName> -> return <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.Int" tooltip="Smart cast to kotlin.Int" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>
        is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> -> return <error descr="[TYPE_MISMATCH] Type mismatch: inferred type is Any but Int was expected" tooltip="[TYPE_MISMATCH] Type mismatch.<table><tr><td>Required:</td><td>Int</td></tr><tr><td>Found:</td><td>Any</td></tr></table>" textAttributesKey="ERRORS_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName></error>
        else -> return 1
    }
}
fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">declarations</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>?) {
    if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>) {
       val <warning descr="[UNUSED_VARIABLE] Variable 'p4' is never used" tooltip="[UNUSED_VARIABLE] Variable 'p4' is never used" textAttributesKey="NOT_USED_ELEMENT_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE">p4</symbolName></warning>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> = <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.String" tooltip="Smart cast to kotlin.String" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>
    }
    if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>?) {
        if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> != null) {
            val <warning descr="[UNUSED_VARIABLE] Variable 's' is never used" tooltip="[UNUSED_VARIABLE] Variable 's' is never used" textAttributesKey="NOT_USED_ELEMENT_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE">s</symbolName></warning>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> = <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.String" tooltip="Smart cast to kotlin.String" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>
        }
    }
    if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> != null) {
        if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>?) {
            val <warning descr="[UNUSED_VARIABLE] Variable 's' is never used" tooltip="[UNUSED_VARIABLE] Variable 's' is never used" textAttributesKey="NOT_USED_ELEMENT_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE">s</symbolName></warning>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> = <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.String" tooltip="Smart cast to kotlin.String" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>
        }
    }
}
fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">vars</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>?) {
    var <warning descr="[ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE] Variable 'b' is assigned but never accessed" tooltip="[ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE] Variable 'b' is assigned but never accessed" textAttributesKey="NOT_USED_ELEMENT_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">b</symbolName></symbolName></warning>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName> = 0
    if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName>) {
        <warning descr="[UNUSED_VALUE] The value 'a' assigned to 'var b: Int defined in vars' is never used" tooltip="[UNUSED_VALUE] The value 'a' assigned to 'var b: Int defined in vars' is never used" textAttributesKey="NOT_USED_ELEMENT_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">b</symbolName></symbolName> =</warning> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.Int" tooltip="Smart cast to kotlin.Int" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>
    }
}
fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">returnFunctionLiteralBlock</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>?): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_TRAIT">Function0</symbolName><<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName>> {
    if (<symbolName descr="Value captured in a closure" tooltip="Value captured in a closure" textAttributesKey="KOTLIN_WRAPPED_INTO_REF">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName>) return { <symbolName descr="Smart cast to kotlin.Int" tooltip="Smart cast to kotlin.Int" textAttributesKey="KOTLIN_SMART_CAST_VALUE"><symbolName descr="Value captured in a closure" tooltip="Value captured in a closure" textAttributesKey="KOTLIN_WRAPPED_INTO_REF">a</symbolName></symbolName> }
    else return { 1 }
}
fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">returnFunctionLiteral</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>?): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_TRAIT">Function0</symbolName><<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName>> =
    if (<symbolName descr="Value captured in a closure" tooltip="Value captured in a closure" textAttributesKey="KOTLIN_WRAPPED_INTO_REF">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName>) (fun (): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName> = <symbolName descr="Smart cast to kotlin.Int" tooltip="Smart cast to kotlin.Int" textAttributesKey="KOTLIN_SMART_CAST_VALUE"><symbolName descr="Value captured in a closure" tooltip="Value captured in a closure" textAttributesKey="KOTLIN_WRAPPED_INTO_REF">a</symbolName></symbolName>)
    else { -> 1 }

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">mergeSmartCasts</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>?) {
  if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> || <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName>) {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>.<error descr="[UNRESOLVED_REFERENCE] Unresolved reference: compareTo" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: compareTo" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">compareTo</error>("")
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.Any" tooltip="Smart cast to kotlin.Any" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">toString</symbolName>()
  }
  if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName> || <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>) {
    <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>.<error descr="[UNRESOLVED_REFERENCE] Unresolved reference: compareTo" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: compareTo" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">compareTo</error>("")
  }
  when (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>) {
    is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>, is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName> -> <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>.<error descr="[UNRESOLVED_REFERENCE] Unresolved reference: compareTo" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: compareTo" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">compareTo</error>("")
  }
  if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> && <warning descr="[USELESS_IS_CHECK] Check for instance is always 'true'" tooltip="[USELESS_IS_CHECK] Check for instance is always 'true'" textAttributesKey="WARNING_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName></warning>) {
    val <warning descr="[UNUSED_VARIABLE] Variable 'i' is never used" tooltip="[UNUSED_VARIABLE] Variable 'i' is never used" textAttributesKey="NOT_USED_ELEMENT_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE">i</symbolName></warning>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName> = <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.String" tooltip="Smart cast to kotlin.String" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">compareTo</symbolName>("")
  }
  if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> && <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.String" tooltip="Smart cast to kotlin.String" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">compareTo</symbolName>("") == 0) {}
  if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> || <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">a</symbolName>.<error descr="[UNRESOLVED_REFERENCE] Unresolved reference: compareTo" tooltip="[UNRESOLVED_REFERENCE] Unresolved reference: compareTo" textAttributesKey="WRONG_REFERENCES_ATTRIBUTES">compareTo</error>("") <error descr="[DEBUG] Reference is not resolved to anything, but is not marked unresolved" tooltip="[DEBUG] Reference is not resolved to anything, but is not marked unresolved" textAttributesKey="KOTLIN_DEBUG_INFO">==</error> 0) {}
}

//mutability
fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">f</symbolName>(): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> {
    var <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">a</symbolName></symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName> = 11
    if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE"><symbolName descr="Wrapped into a reference object to be modified when captured in a closure" tooltip="Wrapped into a reference object to be modified when captured in a closure" textAttributesKey="KOTLIN_WRAPPED_INTO_REF">a</symbolName></symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>) {
        val <warning descr="[UNUSED_VARIABLE] Variable 'i' is never used" tooltip="[UNUSED_VARIABLE] Variable 'i' is never used" textAttributesKey="NOT_USED_ELEMENT_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE">i</symbolName></warning>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> = <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE"><symbolName descr="Smart cast to kotlin.String" tooltip="Smart cast to kotlin.String" textAttributesKey="KOTLIN_SMART_CAST_VALUE"><symbolName descr="Wrapped into a reference object to be modified when captured in a closure" tooltip="Wrapped into a reference object to be modified when captured in a closure" textAttributesKey="KOTLIN_WRAPPED_INTO_REF">a</symbolName></symbolName></symbolName>
        <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE"><symbolName descr="Smart cast to kotlin.String" tooltip="Smart cast to kotlin.String" textAttributesKey="KOTLIN_SMART_CAST_VALUE"><symbolName descr="Wrapped into a reference object to be modified when captured in a closure" tooltip="Wrapped into a reference object to be modified when captured in a closure" textAttributesKey="KOTLIN_WRAPPED_INTO_REF">a</symbolName></symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_CALL">compareTo</symbolName>("f")
        val <warning descr="[UNUSED_VARIABLE] Variable 'f' is never used" tooltip="[UNUSED_VARIABLE] Variable 'f' is never used" textAttributesKey="NOT_USED_ELEMENT_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE">f</symbolName></warning>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_TRAIT">Function0</symbolName><<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>> = {
            <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE"><symbolName descr="Wrapped into a reference object to be modified when captured in a closure" tooltip="Wrapped into a reference object to be modified when captured in a closure" textAttributesKey="KOTLIN_WRAPPED_INTO_REF">a</symbolName></symbolName> = 42
            <error descr="[TYPE_MISMATCH] Type mismatch: inferred type is Any but String was expected" tooltip="[TYPE_MISMATCH] Type mismatch.<table><tr><td>Required:</td><td>String</td></tr><tr><td>Found:</td><td>Any</td></tr></table>" textAttributesKey="ERRORS_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE"><symbolName descr="Wrapped into a reference object to be modified when captured in a closure" tooltip="Wrapped into a reference object to be modified when captured in a closure" textAttributesKey="KOTLIN_WRAPPED_INTO_REF">a</symbolName></symbolName></error>
        }
        return <error descr="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'a' is a local variable that is captured by a changing closure" tooltip="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'a' is a local variable that is captured by a changing closure" textAttributesKey="ERRORS_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE"><symbolName descr="Wrapped into a reference object to be modified when captured in a closure" tooltip="Wrapped into a reference object to be modified when captured in a closure" textAttributesKey="KOTLIN_WRAPPED_INTO_REF">a</symbolName></symbolName></error>
    }
    return ""
}

class <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Mutable</symbolName>(var <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">x</symbolName></symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>?) {

    val <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION">xx</symbolName></symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>?
        <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_KEYWORD">get</symbolName>() = <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">x</symbolName></symbolName>

    fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">foo</symbolName>(): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> {
        if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">x</symbolName></symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>) {
            return <error descr="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'x' is a mutable property that could have been changed by this time" tooltip="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'x' is a mutable property that could have been changed by this time" textAttributesKey="ERRORS_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">x</symbolName></symbolName></error>
        }
        if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">x</symbolName></symbolName> != null) {
            return <error descr="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'x' is a mutable property that could have been changed by this time" tooltip="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'x' is a mutable property that could have been changed by this time" textAttributesKey="ERRORS_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">x</symbolName></symbolName></error>
        }
        if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION">xx</symbolName></symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>) {
            return <error descr="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'xx' is a property that has open or custom getter" tooltip="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'xx' is a property that has open or custom getter" textAttributesKey="ERRORS_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION">xx</symbolName></symbolName></error>
        }
        return ""
    }

    fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">bar</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">other</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Mutable</symbolName>): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> {
        var <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">y</symbolName></symbolName> = <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">other</symbolName>
        if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">y</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">x</symbolName></symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>) {
            return <error descr="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'y.x' is a complex expression" tooltip="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'y.x' is a complex expression" textAttributesKey="ERRORS_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">y</symbolName></symbolName>.<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">x</symbolName></symbolName></error>
        }
        return ""
    }
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">foo</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">aa</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName> {
    var <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">a</symbolName></symbolName> = <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">aa</symbolName>
    if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE">a</symbolName></symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Int</symbolName>) {
        return <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_MUTABLE_VARIABLE"><symbolName descr="Smart cast to kotlin.Int" tooltip="Smart cast to kotlin.Int" textAttributesKey="KOTLIN_SMART_CAST_VALUE">a</symbolName></symbolName></symbolName>
    }
    return 1
}

fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">inForLoop</symbolName>(<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">x</symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Any</symbolName>?) {
    if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">x</symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">Array</symbolName><*>) {
        for (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE">i</symbolName> in <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER"><symbolName descr="Smart cast to kotlin.Array<*>" tooltip="Smart cast to kotlin.Array<*>" textAttributesKey="KOTLIN_SMART_CAST_VALUE">x</symbolName></symbolName>) {}
    }
    for (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_LOCAL_VARIABLE">i</symbolName> in <error descr="[ITERATOR_MISSING] For-loop range must have an 'iterator()' method" tooltip="[ITERATOR_MISSING] For-loop range must have an 'iterator()' method" textAttributesKey="ERRORS_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_PARAMETER">x</symbolName></error>) {}
}

class <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">ExplicitAccessorForAnnotation</symbolName> {
    val <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION">tt</symbolName></symbolName>: <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>? = "good"
        <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_KEYWORD">get</symbolName>

    fun <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_FUNCTION_DECLARATION">foo</symbolName>(): <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName> {
        if (<symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION">tt</symbolName></symbolName> is <symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_CLASS">String</symbolName>) {
            return <error descr="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'tt' is a property that has open or custom getter" tooltip="[SMARTCAST_IMPOSSIBLE] Smart cast to 'String' is impossible, because 'tt' is a property that has open or custom getter" textAttributesKey="ERRORS_ATTRIBUTES"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION"><symbolName descr="null" tooltip="null" textAttributesKey="KOTLIN_INSTANCE_PROPERTY_CUSTOM_PROPERTY_DECLARATION">tt</symbolName></symbolName></error>
        }
        return ""
    }
}